-- These MIBs were created on 08/027/2000
-- This module defines enterprise MIBs for VPN tunnel monitoring
-- 
-- Copyright (c) 1999-2004, Juniper Networks, Inc.
-- All rights reserved.
--     
-- MODULE-IDENTITY
--  OrgName
--    Juniper Networks, Inc.
--  ContactInfo
--     Customer Support
--     
--     1194 North Mathilda Avenue 
--     Sunnyvale, California 94089-1206
--     USA
--     
--     Tel: 1-800-638-8296
--     E-mail: customerservice@juniper.net
--     HTTP://www.juniper.net"
--
--  Last modified date: 05/03/2004
--  Modified copyright and contact info
--
--  Last modified date: 09/28/2001
-- 
--  Last modified date: 11/13/2003
--  Correct spelling mistake
--    

NETSCREEN-VPN-MON-MIB DEFINITIONS ::= BEGIN
IMPORTS

    DisplayString       FROM RFC1213-MIB 
    netscreenVpn        FROM NETSCREEN-SMI;
    

netscreenVpnMon OBJECT IDENTIFIER ::= { netscreenVpn 1 }

--    This module defines the object that are used to monitor
--    VPN tunnels 
--    
         -- the active VPN tunnel table

          -- The VPN tunnel table contains information on the Netscreen's
          -- active tunnels.  It contains both Phase1 and Phase 2
          -- information for an autokey tunnel established by IKE.
          -- It also contains information about the policy with which it is   
          -- associated.

          nsVpnMonTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF NsVpnMonEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A list of active VPN tunnel entries. "
              ::= { netscreenVpnMon 1 }

          nsVpnMonEntry OBJECT-TYPE
              SYNTAX  NsVpnMonEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A VPN tunnel entry containing attributes for both IKE
                       Phase 1 and Phase 2 as well as associated policy"
              INDEX   { nsVpnMonIndex }
              ::= { nsVpnMonTable 1 }

          NsVpnMonEntry ::=
              SEQUENCE {
                  nsVpnMonIndex
                      INTEGER,    
                  nsVpnMonInPlyId
                      INTEGER,
                  nsVpnMonOutPlyId
                      INTEGER,
                  nsVpnMonVpnName
                      DisplayString,  
                  nsVpnMonVsysName 
                      DisplayString,
                  nsVpnMonTunnelType 
                      INTEGER,
                  nsVpnMonEspEncAlg 
                      INTEGER,
                  nsVpnMonEspAuthAlg 
                      INTEGER,
                  nsVpnMonAhAlg 
                      INTEGER,    
                  nsVpnMonKeyType 
                      INTEGER,  
                  nsVpnMonP1Auth 
                      INTEGER,  
                  nsVpnMonVpnType 
                      INTEGER,  
                  nsVpnMonRmtGwIp 
                      IpAddress,        
                  nsVpnMonRmtGwId 
                      DisplayString,    
                  nsVpnMonMyGwIp 
                      IpAddress,        
                  nsVpnMonMyGwId 
                      DisplayString,     
                  nsVpnMonOutSpi 
                      INTEGER,  
                  nsVpnMonInSpi 
                      INTEGER,  
                  nsVpnMonMonState 
                      INTEGER,  
                  nsVpnMonTunnelState 
                      INTEGER,
                  nsVpnMonP1State 
                      INTEGER,  
                  nsVpnMonP1LifeTime 
                      INTEGER,  
                  nsVpnMonP2State 
                      INTEGER,  
                  nsVpnMonP2LifeTime 
                      INTEGER,  
                  nsVpnMonP2LifeBytes 
                      INTEGER,  
                  nsVpnMonDelayAvg 
                      INTEGER,  
                  nsVpnMonDelayLast 
                      INTEGER,  
                  nsVpnMonAvail 
                      INTEGER,
          nsVpnMonSaId
              INTEGER,
                  nsVpnMonGroupId
                      INTEGER,
                  nsVpnMonUsrId
                      INTEGER,
                  nsVpnMonStartSessRequestTime
                      TimeTicks,  
                  nsVpnMonStartSessEstTime
                      TimeTicks,  
                  nsVpnMonEndSessTime
                      TimeTicks,  
                  nsVpnMonBytesIn
                      Counter,
                  nsVpnMonBytesOut
                      Counter,
                  nsVpnMonPacketsIn
                      Counter,
                  nsVpnMonPacketsOut
                      Counter,
                  nsVpnMonIfIndex
                      INTEGER,    
                  nsVpnMonUpdateTime
                      TimeTicks,  
                  nsVpnMonDN
                      DisplayString,
                  nsVpnMonIfInfo
                      INTEGER     
              }

          nsVpnMonIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A unique value for each active VPN tunnel.  Its value
                      ranges between 1 and 65535 and may not be contiguous. 
                      Due to the dynamic nature of active VPN tunnels, the index 
                      has no other meaning but a pure index" 
              ::= { nsVpnMonEntry 1 }

          nsVpnMonInPlyId OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The incoming policy ID for which this tunnel is created for.
                       -1 means no policy associates with this SA."
              ::= { nsVpnMonEntry 2 }

          nsVpnMonOutPlyId OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The outgoing policy ID for which this tunnel is created for.
                       -1 means no policy associates with this SA."
              ::= { nsVpnMonEntry 3 }

          nsVpnMonVpnName OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..32))
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A textual string contains information about the
                      VPN entity from which this tunnel was derived.  "
              ::= { nsVpnMonEntry 4 }

          nsVpnMonVsysName OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..32))
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A textual string contains the
                      Virtual system to which this tunnel belongs."
              ::= { nsVpnMonEntry 5 }

          nsVpnMonTunnelType OBJECT-TYPE
              SYNTAX  INTEGER {
                reserved(0),
                proto-isakmp(1),
        proto-ipsec_ah(2),
                proto-ipsec_esp(3),
                proto-ipcomp(4)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Protocol type used for the tunnel"
              ::= { nsVpnMonEntry 6 }

        nsVpnMonEspEncAlg OBJECT-TYPE
              SYNTAX  INTEGER {
                reserved(0),
                esp-des-iv64(1),
                esp-des(2),
                esp-3des(3),
                esp-rc5(4),
                esp-idea(5),
                esp-cast(6),
                esp-blowfish(7),
                esp-3idea(8),
                esp-des-iv32(9),
                esp-rc4(10),
                esp-null(11),
                esp-aes(12),
                esp-aes192(20),
                esp-aes256(21)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "a value which identifies a particular algorithm to be
                       used to provide secrecy protection for ESP.  "
              ::= { nsVpnMonEntry 7 }

        nsVpnMonEspAuthAlg OBJECT-TYPE
              SYNTAX  INTEGER {
                reserved(0),
                hmac-md5(1),
                hmac-sha(2),
                des-mac(3),
                ipdk(4)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The ESP Authentication Algorithm used in the IPsec. "
              ::= { nsVpnMonEntry 8 }

        nsVpnMonAhAlg OBJECT-TYPE
              SYNTAX  INTEGER {
                reserved(0),
                ah-md5(2),
                ah-sha(3),
                ah-des(4)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "a value which identifies a particular algorithm to be
                   used to provide integrity protection for AH.   "
              ::= { nsVpnMonEntry 9 }

        nsVpnMonKeyType OBJECT-TYPE
              SYNTAX  INTEGER {
                manual(0),
                auto-ike(1)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "a value which identifies a key exchange protocol
                   to be used for the negotiation  "
              ::= { nsVpnMonEntry 10 }

        nsVpnMonP1Auth OBJECT-TYPE
              SYNTAX  INTEGER {
                unused(0),
                preshared-key(1),
                dss-Signature(2),
                rsa-Signature(3),
                rsa-Encryption1(4),
                rsa-Encryption2(5)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "a value which identifies Phase 1 authentication method"
              ::= { nsVpnMonEntry 11 }

        nsVpnMonVpnType OBJECT-TYPE
              SYNTAX  INTEGER {
                reserved(0),
                dialup(1),
                site-to-site(2)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The type of this VPN tunnel, either a dialup or site-to-site  "
              ::= { nsVpnMonEntry 12 }

        nsVpnMonRmtGwIp OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The peer Gateway's IP address "
              ::= { nsVpnMonEntry 13 }

        nsVpnMonRmtGwId OBJECT-TYPE
              SYNTAX  DisplayString 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The peer Gateway's ID "
              ::= { nsVpnMonEntry 14 }

        nsVpnMonMyGwIp OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local Gateway's IP address "
              ::= { nsVpnMonEntry 15 }

        nsVpnMonMyGwId OBJECT-TYPE
              SYNTAX  DisplayString
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local Gateway's ID "
              ::= { nsVpnMonEntry 16 }

        nsVpnMonOutSpi OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The SPI for outgoing packets  "
              ::= { nsVpnMonEntry 17 }

        nsVpnMonInSpi OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The SPI for incoming packets "
              ::= { nsVpnMonEntry 18 }

        nsVpnMonMonState OBJECT-TYPE
              SYNTAX  INTEGER {
                off(0),
                on(1)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The monitoring status, if it is on, an icmp ping will be sent over
                       the tunnel periodically to test the connectivity and latency "
              ::= { nsVpnMonEntry 19 }

        nsVpnMonTunnelState OBJECT-TYPE
              SYNTAX  INTEGER {
                down(0),
                up(1)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The current tunnel status determined by the icmp ping 
                        if The monitoring status is on."
              ::= { nsVpnMonEntry 20 }

        nsVpnMonP1State OBJECT-TYPE
              SYNTAX  INTEGER {
                inactive(0),
                active(1)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The IKE's Phase 1 status"
              ::= { nsVpnMonEntry 21 }


        nsVpnMonP1LifeTime OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "an active Phase 1 sa's time left before re-key.
                        -1 means unlimited lifetime."
              ::= { nsVpnMonEntry 22 }

        nsVpnMonP2State OBJECT-TYPE
              SYNTAX  INTEGER {
                inactive(0),
                active(1)
              }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The IKE's Phase 2 status"
              ::= { nsVpnMonEntry 23 }


        nsVpnMonP2LifeTime OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "an active Phase 2 sa's time left before re-key.
                                           -1 means unlimited life time."
              ::= { nsVpnMonEntry 24 }

        nsVpnMonP2LifeBytes OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "an active Phase 2 sa's bytes left before re-key.
                                           -1 means unlimited life bytes."
              ::= { nsVpnMonEntry 25 }

        nsVpnMonDelayAvg OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "a kind of rolling average of latency, in milliseconds.
                        -1 has no meaning here, which means nsVpnMonDelayAvg 
                        has not been calculated yet."
              ::= { nsVpnMonEntry 26 }

        nsVpnMonDelayLast OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "latency in last sample, in milliseconds.
                                                -1 means either vpn tunnel is inactive or vpn tunnel
                                                monitor is not turned on."
              ::= { nsVpnMonEntry 27 }

        nsVpnMonAvail OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "percentage over 30 samples"
              ::= { nsVpnMonEntry 28 }

          nsVpnMonSaId OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "SA identifier, also used as table index" 
              ::= { nsVpnMonEntry 29 }

          nsVpnMonGroupId OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Group Identifier"
              ::= { nsVpnMonEntry 30 }

          nsVpnMonUsrId OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "User Identifier"
              ::= { nsVpnMonEntry 31 }

          nsVpnMonStartSessRequestTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Start Session request timestamp "
              ::= { nsVpnMonEntry 32 }

          nsVpnMonStartSessEstTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Start Session establish timestamp "
              ::= { nsVpnMonEntry 33 }

          nsVpnMonEndSessTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "End Session timestamp [when session terminates]"
              ::= { nsVpnMonEntry 34 }

          nsVpnMonBytesIn OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Incoming bytes through this sa."
              ::= { nsVpnMonEntry 35 }

          nsVpnMonBytesOut OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Outgoing bytes through this sa."
              ::= { nsVpnMonEntry 36 }

          nsVpnMonPacketsIn OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Incoming packets through this sa."
              ::= { nsVpnMonEntry 37 }

          nsVpnMonPacketsOut OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Outgoing packets through this sa."
              ::= { nsVpnMonEntry 38 }

          nsVpnMonIfIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "interface index."
              ::= { nsVpnMonEntry 39 }

          nsVpnMonUpdateTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Timestamp [Whenever any member of the row gets updated, the timestamp is updated] "
              ::= { nsVpnMonEntry 40 }

          nsVpnMonDN OBJECT-TYPE
              SYNTAX  DisplayString(SIZE(0..64))
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "DN name"
              ::= { nsVpnMonEntry 41 }

          nsVpnMonIfInfo OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "Internal id assigned to this interface. Stays persistent across resets."
              ::= { nsVpnMonEntry 42 }


END